| <<<предыдущая глава | к содержанию | следующая глава >>> |
Для перехода в режим программирования в окне управления выбираем пункт File и входим в редактор MatLab'а: New (создать новый М-файл) или Open(открыть существующий файл с расширением .m). В дальнейшем может производиться обычный набор текста программы или его корректура и действия в соответствии с меню (сохранение под текущим или другим именем, запуск на исполнение в обычном и отладочном режимах и др.).
Различают два вида М-файлов: М-сценарии и М-функции.
М-сценарий - это файл, содержащий последовательность команд и комментариев (строк, начинающихся символом %) и пользующийся данными из рабочей области. Заголовок его начинается командой script или может отсутствовать.
Для М-функции допускаются входные и выходные аргументы, локализация внутренних ее переменных и возможность обращения к ней из других программ. М-функции включаются в библиотеку функций системы в виде текстовых файлов.
Заголовок М-функции имеет вид:
function [<список выходных переменных>]=
<имя функции> (<список входных переменных>)
например, функция вычисления факториала положительного числа и его обратной величины может быть описана файлом fact.m:function [f,g]=fact(n) % факториал и обратная величина f=prod (1:n); g=1/f;
Кроме использованных выше операторов присваивания, программирование в MatLab'е допускает и ряд других традиционных для прогрммных сред операторов.
Условный оператор выступает в одной из следующих форм:
if <условие> if <условие> if <условие> <команды> <команды> <команды> end else elseif <условие> <команды> <команды> end else <команды> end
В роли условия может использоваться любое логическое выражение, построенное на основе операций отношения и логических. Если значение этого выражения является массивом, то условие считается ис-тинным, если все его элементы истинны (истина - 1, ложь - 0).
Оператор цикла с заданным числом повторений, в основном используемый в форме:
for V=A :H:B for V=A:B <команды> <команды> end end
(V -переменная/параметр цикла, A,B - начальное и конечные значения; H - приращение, по умолчанию 1). Допускаются и вложенные циклы, например:
for i=1:n for i=1:n-1 for j=1:m for k=i+1:n a(i,j)=x(i)^j; if a(i) < a(k) end m=a(i) end a(i)=a(k) a(k)=m end end end
В заголовке цикла можно использовать одномерный массив. Так цикл
k=1; for i=[0 5 7] x(k)=2^i; k=k+1; endформирует массив Х=[1 32 128].
Оператор цикла с предусловием имеет традиционную конструкцию:
while <условие> <команды> endи обеспечивает выполнение команд тела цикла, пока истинно проверяемое условие. Заметим, что работа цикла может быть прервана (выход из внутреннего цикла) оператором break:
while a<1 n=n+1 if n>250 break end ...
Оператор переключения обобщает условный оператор на случай более двух условий и имеет конструкцию:
switch <выражение> case <значение 1> <команды> case <значение 2> <команды> . . . . . otherwise % может отсутствовать <команды> end
Контрольные значения проверяются на равенство и могут задаваться и списком:
swith k case 0 t=1 case (1, 2,5) t=2 otherwise t=0 end
Выход из функции в вызывающую программу обеспечивается выполнением последнего ее оператора или командой return.
Кроме упомянутых основных операторов, традиционных для любой системы программирования, остановимся на ряде операторов обеспечения пользовательского интерфейса.
Ввод с клавиатуры реализуется командой вида
<переменная>= input ('подсказка')
Например,
" x=input(' степень полинома ');
степень полинома 3
Приостановка выполнения программы может быть предусмотрена включением в текст команды pause (приостановка до нажатия любой клавиши), pause (n) (приостановка на n сек), keyboard (приостановка с возможностью выполнять практически любые ко-манды и последующим возвратом в программу командой return ).
Можно построить выбор варианта с клавиатуры созданием меню:
<переменная>=menu ('заголовок','выбор1','выбор2',...)
Например, команда:
k=menu('Использовать метод','Гаусса','Краута','простой итерации')
создаст на экране всплывающее меню с указанными пунктами-клавишами и щелчок по клавише задаст значение переменной k, рав-ное 1, 2 или 3.
Мы не останавливаемся на многообразии операторов, связанных с выводом на экран (вывод значения disp, форматированный вывод fprint), отладкой и сигнализацией об ошибках, анализом списка аргументов и др.
Приведем несколько простейших примеров использования программного режима.
Пример 1. Анализ скорости убывания элементов числовой последовательности
до значений, меньших 0.0001)
Чтобы с легкостью отыскивать значения элементов последовательности, опишем функцию (файл y.m):
function f=y(n) if mod(n,2)==0 f=-1; else f=1; end f=f/n^n; endи сценарий (файл limit1.m):
n=1 ;
while abs(y(n))>1e-4
n=n+1 ;
end
disp('Число элементов последовательности равно')
k=n
for x=1:k
Y(x)=y(x);
end
disp('Значения элементов последовательности')
Y
plot(1:k,Y, 'r-*') %Линия -сплошная(-)красная ®, маркеры(*)
| Теперь можно в командной строке набрать вызов limit1, получая на экране число элементов последовательности k, значения элементов последовательности Y (n=1ёk) и "график" функции: |
| Число элементов последовательности равно k =6 Значения элементов последовательности
|
Пример 2. Поиск оценки суммы ряда.
с точностью 10-6.
Файл limit2.m (сценарий):
y=1;
s=y;
m=1;
while abs(y)>1e-6
y=-y*(2*m-1)/(2*m+1).^2;
s=s+y;
m=m+1 ;
end
disp('Число слагаемых' )
disp( m-1)
disp('Оценка суммы')
disp(s)
В командной строке набираем limit2 , получая на экране число элементов отрезка суммы, превышающих 10-6 и саму оценку суммы:
| Число слагаемых | 6 |
| Оценка суммы | 0.90097107966794 |
| <<<предыдущая глава | к содержанию | следующая глава >>> |